﻿#pragma once
#include "zyCtrol.h"
#include "zyMonthCal.h"
namespace DarkMoonUI {

	class zyDateTimePick : public  zyCtrol
	{
	public:
		zyDateTimePick();
		~zyDateTimePick();
		
		static void  WINAPI zyDateTimePick_Destroy(zyObject* obj);
		static LRESULT WINAPI zyDateTimePick_ChildWndProc(zyObject* obj, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, BOOL* bHandle);
		static LRESULT  WINAPI zyDateTimePick_WndProc(zyObject* obj, HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL* bHandled);
		void OnNCDestroy();
		BOOL 创建(HWND 参数_父窗口, const std::wstring& 参数_标题 = L"", POINT 参数_位置 = POINT{ 0, 0 }, POINT 参数_尺寸 = POINT{ 60, 120 },
			int 参数_ID = 0, int 参数_窗口风格 = 0, int 参数_扩展风格 = 0);
		BOOL 创建(zyWindow& 参数_父窗口, const std::wstring& 参数_标题 = L"", POINT 参数_位置 = POINT{ 0, 0 }, POINT 参数_尺寸 = POINT{ 60, 120 },
			int 参数_ID = 0, int 参数_窗口风格 = 0, int 参数_扩展风格 = 0);
		bool 置日期格式(const std::wstring& 参数_格式);
		bool 是否空日期();
		DOUBLE 今天(DOUBLE 参数_今天 = 0);
		DOUBLE 最小时间(DOUBLE 参数_最小时间 = 0);
		DOUBLE 最大时间(DOUBLE 参数_最大时间 = 0);
		int 取月历颜色(int 参数_标志);
		bool 置月历颜色(int 参数_颜色值, int 参数_标志);
		bool 取月历(zyMonthCal& 参数_月历);
		Gdiplus::Font* 取月历字体();
		void 置月历字体(Gdiplus::Font& 参数_字体);
		//@备注 函数 整型 OnDateTimeSelChange(HWND hWnd,长整型 改变后日期,逻辑型 是否空日期)
		void 事件_选择日期被改变(TRegEvent* 参数_事件指针) { SetRegEvent(L"OnDateTimeSelChange", 参数_事件指针); }
		//@备注 函数 整型 OnUserString(HWND hWnd,整型 输入的文本【wchar*】,[日期时间型,参考-1] 返回日期,[逻辑型,参考-1] 是否空日期)  备注：仅当设置了 "日期框_应用程序解析"风格时，发送此事件
		void 事件_用户输入(TRegEvent* 参数_事件指针) { SetRegEvent(L"OnUserString", 参数_事件指针); }
	};

}

